package com.zhf.edugatewayboot;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.HashMap;

@SpringBootTest
class EduGatewayBootApplicationTests {

    @Test
    void contextLoads() {

    }

    /**
     * 判断数组中所有的数字是否只出现一次。给定一个数组array，判断数组 array 中是否所有的数字都只 出现过一次。例如，arr = {1, 2, 3}，输出 YES。又如，arr = {1, 2, 1}，输出 NO。约束时间复杂度为 O(n)。
     * @param array
     */
    public void isDouble(int[] array){
        HashMap<Integer, Integer> map = new HashMap<>();
        for(int i=0;i<array.length;i++){
            if(map.get(array[i])==null){
                map.put(array[i],1);
            }else if(map.get(array[i])==1){
                System.out.println("NO");
                return;
            }
        }
        System.out.println("YES");
    }

    public class ListNode{
        int val;
        ListNode next;

        public ListNode(int val, ListNode next) {
            this.val = val;
            this.next = next;
        }
    }

    /**
     * 给定一个链表，判断链表中是否有环。存在环返回 true ，否则返回 false，约束时间复杂度为 O(n)。
     * @param head
     * @return
     */
    public boolean hasCycle(ListNode head) {
        if(head == null){
            return false;
        }
        ListNode a=head;
        ListNode b=head;
        while (true){
            a=a.next;
            if(a==null){
                return false;
            }
            a=a.next;
            if(a==null){
                return false;
            }
            b=b.next;
            if(b==null){
                return false;
            }
            if(a==b){
                return true;
            }
        }
    }
}
